package com.yzmoney.common.util;

import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 格式化 工具
 */
public class FormatUtil {

    private static NumberFormat percentFormat = NumberFormat.getPercentInstance();

    public static final SimpleDateFormat yyyy_MM_dd = new SimpleDateFormat("yyyy-MM-dd");
    public static final SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
    public static final SimpleDateFormat yyyy_mm_ddhhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    public static final SimpleDateFormat yyyymmddhhmmss = new SimpleDateFormat("yyyyMMddHHmmss");
    public static final SimpleDateFormat yyyyMM = new SimpleDateFormat("yyyyMM");

    static {
        percentFormat.setMaximumFractionDigits(1);
    }

    /**
     * 把数字格式化为百分比
     */
    public static String formatPercent(Double num) {
        return percentFormat.format(num);
    }

    /**
     * 把一个数字格式化<br>
     * 注意 ：这里 使用 去尾法处理
     *
     * @param num    需要格式化的数字
     * @param length 小数点保留位数
     */
    public static double formatNum(double num, int length) {
        BigDecimal bg1 = new BigDecimal(Double.toString(num));
        BigDecimal bg2 = bg1.setScale(length, BigDecimal.ROUND_DOWN);
        return bg2.doubleValue();
    }
    
    /**
     * 把一个数字格式化强制保留小数点位数<br>
     * @param num    需要格式化的数字
     * @param length 小数点保留位数
     */
    public static String formatDouble(double num, int length) {
    	NumberFormat numberFormat = NumberFormat.getNumberInstance();
    	numberFormat.setMinimumFractionDigits(length);
    	numberFormat.setMaximumFractionDigits(length);
    	return numberFormat.format(num);
    }
    public static String formatDate(Date time) {
        return yyyy_MM_dd.format(time);
    }

    public static String formatTime(Date time) {
        return yyyy_mm_ddhhmmss.format(time);
    }

    public static String formatYMD(Date time) {
        return yyyyMMdd.format(time);
    }

    public static String formatYM(Date time) {
        return yyyyMM.format(time);
    }
}
